#!/usr/bin/python3

total = 0  # 这是一个全局变量


# 可写函数说明
def sum(arg1, arg2):
    # 返回2个参数的和."
    total = arg1 + arg2  # total在这里是局部变量.
    print("函数内是局部变量 : ", total)
    return total


# 调用sum函数
sum(10, 20)
print("函数外是全局变量 : ", total)


def my_function():
    x = 5  # 局部变量
    print(x)  # 访问局部变量 x


my_function()  # 输出 5
# print(x)  # 报错: NameError: name 'x' is not defined


# 当内部作用域想修改外部作用域的变量时，就要用到 global 和 nonlocal 关键字了。
# !/usr/bin/python3

num = 1


def fun1():
    global num  # 需要使用 global 关键字声明
    print(num)
    num = 123
    print(num)


fun1()
print(num)

# 1
# 123
# 123

#如果要修改嵌套作用域（enclosing 作用域，外层非全局作用域）中的变量则需要 nonlocal 关键字了
# !/usr/bin/python3

def outer():
    num = 10
    def inner():
        nonlocal num  # nonlocal关键字声明
        num = 100
        print(num)
    inner()
    print(num)
outer()


a = 10
def test():
    global a
    a = a + 1
    print(a)
test()